<template>
  <div class="progress-circle">
    <!-- width和height 实际上显示出的大小         半径50的话长度为100 -->
    <svg :width="radius" :height="radius" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg">
      <!-- 代表背景的圆 r：半径 cx：圆心的x坐标 cy：圆心的y坐标 -->
      <circle class="progress-background" r="50" cx="50" cy="50" fill="transparent" />
      <!-- 代表进度的圆 stroke-dashoffset 0代表100% -->
      <circle class="progress-bar" r="50" cx="50" cy="50" fill="transparent" :stroke-dasharray="dashArray" :stroke-dashoffset="dashOffset" />
    </svg>
    <slot></slot>
  </div>
</template>

<script type="text/ecmascript-6">
export default {
  props: {
    radius: {
      type: Number,
      default: 100
    },
    percent: {
      type: Number,
      default: 0
    }
  },
  data() {
    return {
      // 周长
      dashArray: Math.PI * 100
    }
  },
  computed: {
    dashOffset() {
      return this.dashArray * (1 - this.percent)
    }
  }
}
</script>

<style scoped lang="stylus" rel="stylesheet/stylus">
@import '~@/assets/stylus/variable';

.progress-circle {
  position: relative;

  circle {
    stroke-width: 8px;
    transform-origin: center;

    &.progress-background {
      transform: scale(0.9);
      stroke: $color-theme-d;
    }

    &.progress-bar {
      transform: scale(0.9) rotate(-90deg);
      stroke: $color-theme;
    }
  }
}
</style>